﻿// Inner Fire 游戏引擎库
// DxElement - DirectX基础元素
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 所属层级：元素层(3)
// 所有DirectX的元素都继承这一层。如果与游戏的框架比较，相当于GameObject。
// 是做为一切DirectX可控制元素，比如贴图、材质的基础。有一个全局UID。
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-01-15

#pragma once

#include <dx/core/dx_core.h>
#include <string>
#include <static_string.h>

namespace ifire::dx {

class DxElement {
public:
  DxElement(int index, ikit::sstr name);
  DxElement(const DxElement& rhs) = delete;
  DxElement& operator=(const DxElement& rhs) = delete;
  ~DxElement() = default;

  inline std::uint64_t UID() const { return uid_; }
  inline const ikit::sstr Name() { return name_; }
  inline int Index() const { return index_; }
  inline void SetIndex(int value) { index_ = value; }

protected:
  std::uint64_t uid_;
  int index_;
  ikit::sstr name_;
};

} // namespace ifire::dx
